import { defineStore } from 'pinia'

export interface Notice {
  id: string
  date: string
  name: string
  address: string
}

const tableData = [
  {
    id: '1',
    date: '2025-09-01',
    name: '2025年秋季学期开学典礼通知',
    address:
      '教学楼A栋一层多功能厅，将于上午9点举行全校开学典礼，请全体师生准时参加。',
  },
  {
    id: '2',
    date: '2025-09-03',
    name: '关于校园一卡通充值服务调整的通知',
    address:
      '自2025年9月5日起，校园一卡通充值服务时间调整为每天8:00-18:00，地点在综合服务大厅。',
  },
  {
    id: '3',
    date: '2025-09-05',
    name: '中秋节假期安排',
    address:
      '根据校历，9月14日至9月16日放假三天，请同学们合理安排学习和出行，注意安全。',
  },
  {
    id: '4',
    date: '2025-09-08',
    name: '图书馆开放时间调整通知',
    address:
      '图书馆自9月10日起，周一至周日开放时间统一为7:30-22:00，节假日正常开放。',
  },
  {
    id: '5',
    date: '2025-09-10',
    name: '教师节庆祝活动安排',
    address:
      '9月10日下午3点在礼堂举行教师节庆祝大会，欢迎全体师生参加，共同表达对老师的敬意。',
  },
  {
    id: '6',
    date: '2025-09-12',
    name: '关于新生体检的通知',
    address:
      '2025级新生需于9月15日至9月17日，在校医院进行入学体检，请各班班主任组织学生按时参加。',
  },
  {
    id: '7',
    date: '2025-09-13',
    name: '校园网络维护公告',
    address:
      '信息中心将于9月18日凌晨1点至3点对校园网络进行升级维护，期间网络可能短时中断。',
  },
  {
    id: '8',
    date: '2025-09-14',
    name: '关于学生证补办流程的说明',
    address:
      '如有学生证遗失，请到教务处办理挂失手续，并于每周二、周四上午9:00-11:30前往综合服务大厅补办。',
  },
  {
    id: '9',
    date: '2025-09-15',
    name: '2025年秋季运动会筹备通知',
    address:
      '运动会定于10月20日举行，各学院需于9月25日前提交参赛名单，请积极组织报名。',
  },
  {
    id: '10',
    date: '2025-09-16',
    name: '实验室安全培训安排',
    address:
      '理工类专业学生需于9月22日上午在实验楼B栋参加实验室安全培训，具体安排由学院通知。',
  },
  {
    id: '11',
    date: '2025-09-17',
    name: '关于寝室用电安全的提醒',
    address:
      '近期因天气炎热，用电量上升，请同学们注意寝室安全，不得私拉乱接电线或使用违规电器。',
  },
  {
    id: '12',
    date: '2025-09-18',
    name: '迎新晚会通知',
    address:
      '迎新晚会将于9月28日晚7点在操场举行，节目丰富多彩，欢迎全体师生前来观看。',
  },
]

const useNoticeStore = defineStore('Notice', {
  state: () => {
    return {
      tableData: tableData,
      allData: tableData,
    }
  },
  actions: {
    // 新增公告
    addNotice(notice: Notice) {
      this.tableData.unshift(notice)
    },
    // 编辑公告
    updateNotice(updated: Notice) {
      const index = this.tableData.findIndex((item) => item.id === updated.id)
      if (index !== -1) {
        this.tableData[index] = { ...updated }
      }
    },
    // 删除单条公告
    removeNotice(id: string) {
      this.tableData = this.tableData.filter((item) => item.id !== id)
    },
    // 批量删除公告
    removeBatch(ids: string[]) {
      this.tableData = this.tableData.filter((item) => !ids.includes(item.id))
    },
  },
})

export default useNoticeStore
